package cn.edu.ncu.housinghub.service;

import cn.edu.ncu.housinghub.entity.appointment.Appointment;
import cn.edu.ncu.housinghub.vo.Result;

import java.util.List;

/**
 * 预约业务
 */
public interface AppointmentService {
    /**
     * 创建预约
     * @param appointment 预约信息实体
     */
    Result createAppointment(Appointment appointment);

    /**
     * 获取中介的待处理预约
     * @param agentUserId 中介用户ID
     */
    List<Appointment> getAgentPendingAppointments(Long agentUserId);

    /**
     * 获取中介的已确认预约
     * @param agentUserId 中介用户ID
     */
    List<Appointment> getAgentConfirmedAppointments(Long agentUserId);

    /**
     * 获取中介的已完成预约
     * @param agentUserId 中介用户ID
     */
    List<Appointment> getAgentCompletedAppointments(Long agentUserId);

    /**
     * 获取中介的所有预约
     * @param agentUserId 中介用户ID
     */
    List<Appointment> getAgentAllAppointments(Long agentUserId);

    /**
     * 确认预约
     * @param appointmentId 预约ID
     * @param agentUserId 中介用户ID
     */
    void confirmAppointment(Long appointmentId, Long agentUserId);

    /**
     * 拒绝预约
     * @param appointmentId 预约ID
     * @param agentUserId 中介用户ID
     * @param reason 拒绝原因
     */
    void rejectAppointment(Long appointmentId, Long agentUserId, String reason);
}
